package com.xhtech.base.view.viewpage.wpage

import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.viewpager.widget.ViewPager

/**
 * @创建者：yuan_xh
 * @创建时间：2021/3/23 10:18
 * @描述： 解决ViewPager.setCurrentItem中间很多页面切换问题
 */
class WViewPager @JvmOverloads constructor(context: Context?, attrs: AttributeSet? = null) : ViewPager(context!!, attrs) {
    private val helper: WViewPageHelper = WViewPageHelper(this)
    private val canSlide = false

    override fun setCurrentItem(item: Int) {
        setCurrentItem(item, true)
    }
    override fun onTouchEvent(motionEvent: MotionEvent?): Boolean {
        return if (!canSlide) {
            true
        } else super.onTouchEvent(motionEvent)
    }

    override fun onInterceptTouchEvent(motionEvent: MotionEvent?): Boolean {
        return this.canSlide
    }


    override fun setCurrentItem(item: Int, smoothScroll: Boolean) {
        val scroller = helper.scroller
        //这里设置大于等于1，意思是2个相邻的tab点击也不出现闪动。可以根据需求自定义
        if (Math.abs(currentItem - item) > 1) {
            scroller?.setNoDuration(true)
            super.setCurrentItem(item, smoothScroll)
            //这里的设置false为切换后恢复默认的滑动状态，如果取消下面代码，当你滑动viewPager时，就不会有滑动切换效果了。
            scroller?.setNoDuration(false)
        } else {
            scroller?.setNoDuration(false)
            super.setCurrentItem(item, smoothScroll)
        }

    }

}